template method 模式

早绑定 --> 晚绑定

library 派生出 application

class Library
{
public:

	//假设run是一个较为稳定的流程
	void run()
	{
		step1();

		if(step2())   //可变化
		{
			step3();
		}

		for(auto : list)
		{
			step4();  //可变化
		}

		step5();
	}

	virtual~ Library(){};

protected:

	//稳定
	void step1();
	void step3();
	void step5();

	//变化，由子类去实现
	virtual void step2() = 0; 
	virtual void step4() = 0;

}


class Application： public Library
{
protected:

	//子类重写变化的部分
	virtual step4() {};
	virtual step5() {};
}


int main()
{
	//多态
	Library* pLib = new Application();
	pLib -> run();

}